使用原生 Node 模块
使用 NPM 安装
针对 LTS 版本
使用相同版本的 Node.js 和 NW.js
以下说明仅在您使用相同版本的 Node.js 和 NW.js 时有效。
如果您使用的是 LTS 版本,则通过 npm
安装的原生模块可以在进行以下修改后得到支持。
- 在 Linux 和 Mac 上,不需要进行任何修改。
- 在 Windows 上,您需要替换文件
<npm-path>\node_modules\node-gyp\src\win_delay_load_hook.cc
,使用位于 https://github.com/nwjs/nw.js/blob/nw18/tools/win_delay_load_hook.cc 的文件,然后再使用 node-gyp 或 npm 安装模块。
针对非 LTS 版本
如果您使用的是非 LTS 版本,则需要全局预安装 nw-gyp
来构建模块,因为 V8 中的 ABI 存在差异。以下说明也适用于 LTS 版本。
要为 NW.js 安装原生模块,请在您的终端中运行以下命令
# Install nw-gyp globally npm install -g nw-gyp # Setup target NW.js version export npm_config_target=0.18.5 # Setup build architecture, ia32 or x64 export npm_config_arch=x64 export npm_config_target_arch=x64 # Setup env for modules built with node-pre-gyp export npm_config_runtime=node-webkit export npm_config_build_from_source=true # Setup nw-gyp as node-gyp export npm_config_node_gyp=$(which nw-gyp) # Run npm install npm install
Windows 说明
您需要安装一个编译器。您可以通过安装 Visual C++ Build Tools 来获取一个编译器。您还需要 Python 2.7(不支持 3.x 版本)。
npm_config_node_gyp
环境变量必须设置为 path\to\global\node_modules\nw-gyp\bin\nw-gyp.js
,而不是 nw-gyp.cmd
批处理脚本。这是一个 npm 的 bug。
在 Windows 中,您必须使用 set
而不是 export
来设置环境变量。以下是一个完整的示例(Windows 10,Visual C++ Build Tool v2015)
set PYTHON=C:\Python27\python.exe set npm_config_target=0.21.6 set npm_config_arch=x64 set npm_config_runtime=node-webkit set npm_config_build_from_source=true set npm_config_node_gyp=C:\Users\xxxxxxxxx\AppData\Roaming\npm\node_modules\nw-gyp\bin\nw-gyp.js npm install --msvs_version=2015
手动重建
建议使用完整的 NPM 安装
在切换 NW.js 版本后,建议删除 node_modules
文件夹并执行完整的 npm install,如 上述说明。
切换到新版本的 NW.js 后,您可以使用以下工具重建每个原生模块,无需重新安装所有模块。由于构建原生模块需要 binding.gyp
,您可以通过查找 binding.gyp
文件轻松定位所有原生模块。
重建所有原生模块
确保您重建了所有原生模块。否则,您可能会遇到各种问题,甚至崩溃。如果手动重建对您无效,请尝试执行完整的 npm install。
nw-gyp
nw-gyp
是对 node-gyp
的修改,以支持 NW.js 特定的头文件和库。
用法与 node-gyp
相同,只是您需要手动指定 NW.js 的版本和架构 (x64
或 ia32
)。
npm install -g nw-gyp cd myaddon nw-gyp rebuild --target=0.13.0 --arch=x64
有关更多详细信息,请参阅 https://github.com/nwjs/nw-gyp。
node-pre-gyp
一些包使用 node-pre-gyp,它支持通过使用 node-gyp
或 nw-gyp
为 Node.js 和 NW.js 构建。
node-pre-gyp
的用法如下
npm install -g node-pre-gyp cd myaddon node-pre-gyp build --runtime=node-webkit --target=0.13.0 --target_arch=x64
有关更多详细信息,请参阅 https://github.com/mapbox/node-pre-gyp。